AI 시대의 프로그래밍 교육

AI 시대의 프로그래밍 교육은 어떤 형태이면 좋을까? 프로그래밍 교육이 여전히 필요하긴 할까?

교육의 형태

깃헙 코파일럿 등 프로그래밍 보조 도구가 LLM의 가장 성공적인 초기 응용일 수 있었던 이유는, 프로그래밍 환경에는 이미 정적 분석기나 자동화된 단위 테스트나 모듈화 등 LLM의 환각을 빠르게 발견할 도구와 실천법이 잔뜩 존재하기 때문이다.

소프트웨어 결함의 비용은 결함 발견까지의 시간에 비례한다(DCI; defect cost increase). 즉 결함을 빠르게 발견할수록 결함 해소에 드는 비용이 적어진다. 따라서 좋은 환경에서 좋은 실천법에 따라 코딩을 하면 LLM 환각으로 인한 비용이 매우 낮아진다. 반대로 말하면, 정적 분석이 약한 언어를 쓰거나 단위 테스트를 안하거나 설계를 엉망으로 하는 상황에서 코파일럿을 쓰면 환각으로 인해 오히려 비용이 커질 수 있다.

“코파일럿은 숙련자에게만 이롭고 초보자에게는 해롭다”는 류의 이분법은 숙련자가 대체로 좋은 도구와 좋은 실천법을 쓰는 경향이 있기 때문일 수 있다. 초보라도 좋은 도구와 좋은 실천법을 익히면 코파일럿을 이롭게 쓸 수 있다고 믿는다.

한편, 초보자라고 하더라도 좋은 도구를 쓰는 건 상대적으로 쉽지만 좋은 실천법은 어떻게 익힐 수 있을까? 이걸 알면 이미 초보자가 아니지 않나?

따라서 AI 시대의 프로그래밍 교육은 초보자가 AI와 짝 코딩을 하는 상황에서 어떻게 하면 좋은 실천법을 점진적으로 익혀가도록 유도할 수 있는지에 대한 고민을 포함해야 한다.

교육에서 다루면 좋을만한 내용들:

  • 인지 적소 구축 개념 소개. 초보자를 위한 AI 코딩 환경 및 실천법의 중요성 설명
  • : 언제나 “정상” 상태로 되돌릴 수 있도록 하여 안전한 탐색 환경 만들기
  • 코드 읽기: AI가 작성한 코드를 효율적으로 읽고 이해하기
  • 리팩토링: AI가 작성한 코드를 개선하고 그 과정에서 이해하기. 이후에 AI가 더 나은 코드를 만들 수 있도록 유도하기
  • 단위 테스트테스트 주도 개발: AI가 작성한 코드의 오류를 빠르게 검증하기. 이후에 AI가 더 나은 코드를 만들 수 있도록 유도하기
  • 정적 타입 검사 활용하기: AI가 작성한 코드의 오류를 빠르게 검증하기. 이후에 AI가 더 나은 코드를 만들 수 있도록 유도하기. 자바스크립트를 쓰는 환경이라면 타입스크립트, 파이썬을 쓰는 환경이라면 MyPy. 최소한의 타입 이론과 타입 추론에 대해 다루기
  • LLM에 대한 올바른 멘탈 모델 갖추기: LLM이 어떻게 작동하는지, 왜 환각이 일어나는지, 무엇이 믿을 수 있는 제안(타입 기반 자동완성)이고 무엇이 의심할 필요가 있는 제안인지(LLM 기반 고스트텍스트) 구분하기
  • 과정에 담긴 가치를 고민하기. 수련의 관점에서 무엇을 AI에게 시키고 무엇을 인간이 하는 게 유익한지 구분하기
  • 코드 품질 정량화: 테스트 커버리지, 순환복잡도 또는 인지복잡도 등. Linter 사용하기. AI를 쓰는 상황에서도 좋은 코드 품질을 유지하기
  • 메타: 언제 어떤 일을 AI에게 시킬지, AI가 제안한 결과를 어떤 상황에서 얼마나 신뢰할지 등을 구분하는 능력을 기르기. 평소에 어떤 실천법을 쓰면 이런 능력을 개발할 수 있을지에 대해서도 고민해보기.

AI 시대에 프로그래밍 교육을 해야하나?

근미래에는 인간이 프로그래밍을 배울 필요가 없어질까?

코드를 만들기 위한 수단으로서의 프로그래밍이 없어지거나 크게 줄어든다고 하더라도, 사고를 다듬기 위한 수단으로서의 프로그래밍(혹은 그 유사한 무언가; 추상적 사고를 명확히 표현하고, 논리를 전개하고, 복잡성을 추상화하는 방법을 익힐 수 있는 구체적인 무언가)은 계속 필요할 것이다.

AI 시대에 인간이 사고를 뭐하러 다듬나? AI-인간 소통 루프에서 인간의 사고(사고의 속도와 품질)가 병목이기 때문. 루프에서 인간을 제거할 수 있는 분야가 점점 늘어날테지만 어떤 루프에는 여전히 인간이 관여해야 하고, 이 경우 인간으로 인한 병목을 줄이는 게 전체 루프의 퍼포먼스에 가장 큰 영향을 주게 된다(제약 이론).

참고

2025 © ak